/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**Formatea texto
 *
 * @author Raul
 */
public class Formateador {
    
    /**Convierte el <code>texto</code> a camel case
     * 
     * @param texto el texto a convertir
     * @return el texto en camel case :P
     */
    public static String toCamelCase(String texto){
        /** quita los espacios en blanco de adelante y atras del <code>texto</code> 
         y lo convierte a minusculas*/
        texto =texto.trim().toLowerCase();
        /**si el <code>texto</code> resultante no es la cadena vacia*/
        if (texto.length()>0){
            /**hace mayuscula la primera letra*/
            texto = texto.replaceFirst(Character.toString(texto.charAt(0)),
                    Character.toString(texto.charAt(0)).toUpperCase());
            /**construye la expresion regular que halla la primera letra despues de una secuencia de espacios*/
            Pattern regEx = Pattern.compile(" +[a-z]");
            /**construye el buscador del patron creado*/
            Matcher matcher = regEx.matcher(texto);
            /**mientras se encuentre el patron en el <code>texto</code>*/
            while (matcher.find()){
                /**obtiene el indice <code>ix</code> del caracter a convertir a mayuscula*/
                int ix = matcher.end() - 1;
                /**convierte a mayuscula el caracter en el indice <code>ix</code> */
                texto = matcher.replaceFirst(" "+Character.toString(texto.charAt(ix)).toUpperCase());
                /**actualiza el buscador con el <code>texto</code> resultante*/
                matcher.reset(texto);
            }
        }
        return texto;
    }
}
